package com.ruoyi.orderEat.service;

import com.github.pagehelper.PageInfo;
import com.ruoyi.orderEat.domain.ShopCart;
import com.ruoyi.orderEat.domain.ShopInfo;
import com.ruoyi.orderEat.domain.ShopInfoVO;

import java.util.List;

/**
 * 商品信息Service接口
 *
 * @author DingHao
 * @date 2023-11-22
 */
public interface IShopInfoService
{

    /**
     * 购物商品前缀
     */
    String CART_SHOP = "cart:shop:";


    /**
     * 查询商品信息
     *
     * @param shopId 商品信息主键
     * @return 商品信息
     */
    public ShopInfo selectShopInfoByShopId(Long shopId);


    /**
     * 查询商品信息
     *
     * @param shopId 商品信息主键
     * @return 商品信息
     */
    public ShopInfoVO selectWxShopInfoByShopId(Long shopId);

    /**
     * 查询商品信息列表
     *
     * @param shopInfo 商品信息
     * @return 商品信息集合
     */
    public PageInfo<ShopInfoVO> selectShopInfoList(ShopInfo shopInfo);


    /**
     * 新增商品信息
     *
     * @param shopInfo 商品信息
     * @return 结果
     */
    public int insertShopInfo(ShopInfo shopInfo);

    /**
     * 修改商品信息
     *
     * @param shopInfo 商品信息
     * @return 结果
     */
    public int updateShopInfo(ShopInfo shopInfo);

    /**
     * 批量删除商品信息
     *
     * @param shopIds 需要删除的商品信息主键集合
     * @return 结果
     */
    public int deleteShopInfoByShopIds(Long[] shopIds);

    /**
     * 删除商品信息信息
     *
     * @param shopId 商品信息主键
     * @return 结果
     */
    public int deleteShopInfoByShopId(Long shopId);

    /**
     * 购物车添加(+1)
     *
     * @param shopCart 购物车内容
     * @return 结果
     */
    void addCart(ShopCart shopCart);

    /**
     * 购物车添加(多数量)
     *
     * @param shopCart 购物车内容
     * @return 结果
     */
    void saveCartShopBatch(ShopCart shopCart);

    /**
     * 减少购物车
     *
     * @param shopCart 购物车内容
     * @return 结果
     */
    void delCart(ShopCart shopCart);

    /**
     * 清空购物车
     *
     * @param shopCartList @return 结果
     * @param tableId
     */
    void delAllCart(List<ShopCart> shopCartList, Integer tableId);

    /**
     * 购物车列表
     *
     * @return ShopCart列表数据
     */
    List<ShopCart> shopCartList(Integer tableId);

    /**
     * 查询购物车总价
     *
     * @return ShopCart列表数据
     */
    String saleAmountCount(Integer tableId);

    /**
     * 查询购物车总商品数量
     *
     * @return ShopCart列表数据
     */
    String getCartCount(Integer tableId);


}
